/*                          UX-Framework                               
 *                                                                 
 *  iZE Co.,Ltd. Copyright 2009 All rights reserved.          
 *  This file is distributed under the terms of the GNU Lesser 
 *  General Public License, described in file LICENSE.                                     
 */

package jp.ize.ux.acts;

// {{{ imports
import jp.ize.ux.Util;
import jp.ize.ux.UXObject;
import jp.ize.ux.UXPoint;
import jp.ize.ux.acts.Act;
// }}}
// {{{ enum SwapActEvent {
/**
 * このActが持つイベントの種類です。
 */
enum SwapActEvent {
	/** 動作が始まった */
	START;
	/** 動作が終わった */
	COMPLETE;  
}
// }}}
// {{{ typedef Swapable = {> ListStateType, }
/**
 * SwapActが必要な関数、プロパティの定義です。
 */
typedef Swapable = {> ListStateType, }
// }}}
// {{{ class SwapParameter extends ActParameter
/**
 * 位置の交換を表現するクラス。
 */
class SwapParameter extends ActParameter
{
	// {{{ public var target1(default, default) : Int
	/**
	 * 交換対象のインデックス番号です。
	 */
	public var target1(default, default) : Int;
	// }}}
	// {{{ public var target2(default, default) : Int
	/**
	 * 交換対象のインデックス番号です。
	 */
	public var target2(default, default) : Int;
	// }}}
}
// }}}
// {{{ class SwapAct extends ActSubject<SwapActEvent>
/**
 * SwapAct クラス<br>
 * 二つの子コンポーネントの位置を入れ替えます。<br>
 *
 * @author		iZE Co., Ltd.<br>
 * @version		$Id$<br>
 */
class SwapAct extends ActSubject<SwapActEvent>
{
	// {{{ public function new()
	/**
	 * コンストラクタ。
	 */
	public function new()
	{
		super();
	}
	// }}}
	// {{{ public function swap( ?swap_interp : Swapable -> SwapParameter ) : Swapable -> Void
	/**
	 * 子コンポーネントの位置を交換するアクションです。
	 */
	public function swap( ?swap_interp : Swapable -> SwapParameter ) : Swapable -> Void
	{
		var me = this;
		return function( state : Swapable ) {
		};
	}
	// }}}
}
// }}}
